package com.example.lanqiaodemo.controller;

import com.example.lanqiaodemo.To.FileVo;
import com.example.lanqiaodemo.To.TempFilevo;
import com.example.lanqiaodemo.common.Result;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;

@RestController
@CrossOrigin
public class filelist {
    /**
     * 列出当前盘符
     */
    @GetMapping("/root")
    public Result listRoot(){
        File[] files = File.listRoots();
        return Result.ok("查询盘符成功",files);
    }

    /**
     * 根据具体的path，查询子文件
     */
    @PostMapping("/listFiles")
    public Result listFiles(@RequestBody TempFilevo tempFilevo){
        File files = new File(tempFilevo.getPath());
        if (files.isDirectory()){
            File[] files1 = files.listFiles();
            ArrayList<FileVo> fileVoslist = new ArrayList<>();
            for (File f:files1) {
                FileVo fileVo = new FileVo();
                if (f.isFile()) {
                    fileVo.setFlag("1");
                    fileVo.setPath(f.getAbsolutePath());
                }else {
                    fileVo.setFlag("0");
                    fileVo.setPath(f.getAbsolutePath());
                }
                fileVoslist.add(fileVo);
            }
            return Result.ok("查询目录成功",fileVoslist);
        }else {
            return  Result.ok("这不是一个具体的文件，不能再继续了",null);
        }
    }
    /**
     * 根据具体的path，查询子文件2
     */
    @PostMapping("/showfiles")
    public Result showfiles(@RequestBody TempFilevo tempFilevo){
        File files = new File(tempFilevo.getPath());
        if (files.isDirectory()){
            File[] files1 = files.listFiles();
            return Result.ok("查询目录成功",files1);
        }else {
            return  Result.ok("这不是一个具体的文件，不能再继续了",null);
        }
    }
    /**
     * 根据具体的path，查询子文件2
     */
    @PostMapping("/showfilesson")
    public Result showfilesson(@RequestBody TempFilevo tempFilevo){
        File files = new File(tempFilevo.getPath());
        if (files.isDirectory()){
            File[] files1 = files.listFiles();
            return Result.ok("查询目录成功",files1);
        }else {
            return  Result.ok("这不是一个具体的文件，不能再继续了",null);
        }
    }





    /**
     * Value+${} 表示从属性配置文件中取值
     */
    @Value("${my.uploadPath}")
    private  String  uploadFilePath;


    /**
     *
     * @param myFile  上传文件的key的名字
     * @return
     */
    @PostMapping("/upload")
    public   Result    commonUploadFile(MultipartFile    myFile ){
        System.out.println("上传接口被请求");
        if(myFile.isEmpty()){
            return  Result.notok("上传文件是空");
        }
        //重命名
        String  newName=System.currentTimeMillis()+"_"+myFile.getOriginalFilename();
        try {
            //如果文件目录不存在就创建文件夹
            File file  =new File(uploadFilePath);
            if(!file.exists()){
                file.mkdir();
            }
            // 把文件运输到指定的服务器目录中
            myFile.transferTo(new File(uploadFilePath+newName));
        } catch (IOException e) {
            throw new RuntimeException("上传文件失败");
        }
        return  Result.ok("上传文件成功",newName);

    }
}
